﻿/**
 *
 * @file    Chamfer.h
 * @brief   Chamfer Python接口封装
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-25
 *
 */

#ifndef  __PYINTERFACE_PRIMITIVESCHAMFER_H___
#define  __PYINTERFACE_PRIMITIVESCHAMFER_H___

#include <QString>
#include <QObject>
#include <QVariantMap>
#include "WrapperDataObject.h"
#include "WrapperTools.h"
#include "PythonInterfaceAPI.h"

namespace Interface
{
    class FITKAbsGeoCommand;
    class FITKGeoCommandList;
    class FITKAbsGeoModelChamferSolid;
}

/**
 * @brief   Chamfer数据封装类
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-23
 */
class Chamfer : public WrapperDataObject
{
public:
    explicit Chamfer(int id = 0);
    explicit Chamfer(Interface::FITKAbsGeoModelChamferSolid* chamfer);
    virtual ~Chamfer() = default;

    /**
     * @brief   获取类名
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    virtual const QString getClassName() override;

    /**
     * @brief   设置输入命令ID
     * @param   name
     * @return  status
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    bool setInputCmdId(int cmdId);

    /**
     * @brief   设置倒角距离
     * @param   obj
     * @param   dis 距离
     * @return  status
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    bool setDistance(double dis);

private:
    /**
     * @brief   装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-23
     */
    Interface::FITKAbsGeoModelChamferSolid* m_Chamfer{};
};

/**
 * @brief   Chamfer数据装饰器类
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-23
 */
class PythonInterfaceAPI ChamferWrapper : public WrapperDataObjectWrapper
{
    Q_OBJECT
public:
    explicit ChamferWrapper();
    virtual ~ChamferWrapper() = default;

public slots:

    /**
     * @brief   新建装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    Chamfer* new_Chamfer();

    /**
     * @brief   销毁装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void delete_Chamfer(Chamfer* obj);

    /**
     * @brief   设置输入命令名称
     * @param   obj
     * @param   name
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-25
     */
    void setInputCmdName(Chamfer* obj, const QString& name);

    /**
     * @brief   添加被倒角的边索引
     * @param   obj
     * @param   p1[3] xyz
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void setEdgeIndice(Chamfer* obj, QList<int> indexs);

    /**
     * @brief   设置倒角距离
     * @param   obj
     * @param   dis 距离
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void setDistance(Chamfer* obj, double dis);

    /**
     * @brief   更新数据
     * @param   obj
     * @param   p1[3] xyz
     * @param   p2[3] xyz
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void update(Chamfer* obj);

    /**
     * @brief   创建Chamfer
     * @return  Chamfer
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    Chamfer* static_Chamfer_Create();

private:

};


#endif
